home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / By the Book / Learn C++ (CodeWarrior) / Chap 05.02 - friends / friends.cp < prev    next >
Text File  |  1995-10-20  |  2KB  |  111 lines

  1. #include <iostream.h>
  2. #include <string.h>
  3.  
  4. const short    kMaxNameSize = 20;
  5.  
  6. class Employee;
  7.  
  8.  
  9. //---------------------------------------  Payroll
  10.  
  11. class Payroll
  12. {
  13. //            Data members...
  14.     private:
  15.  
  16. //            Member functions...
  17.     public:
  18.                 Payroll();
  19.                 ~Payroll();
  20.         void    PrintCheck( Employee *payee );
  21. };
  22.  
  23. //---------------------------------------  Employee
  24.  
  25. class Employee
  26. {
  27.     friend void Payroll::PrintCheck( Employee *payee );
  28.     
  29. //            Data members...
  30.     private:
  31.         char    employeeName[ kMaxNameSize ];
  32.         long    employeeID;
  33.         float    employeeSalary;
  34.  
  35. //            Member functions...
  36.     public:
  37.                 Employee( char *name, long id, float salary );
  38.                 ~Employee();
  39.         void    PrintEmployee();
  40. };
  41.  
  42.  
  43. //-------------------  Payroll Member Functions
  44.  
  45. Payroll::Payroll()
  46. {
  47.     cout << "Creating payroll object\n";
  48. }
  49.  
  50. Payroll::~Payroll()
  51. {
  52.     cout << "Destroying payroll object\n";
  53. }
  54.  
  55. void    Payroll::PrintCheck( Employee *payee )
  56. {
  57.     cout << "Pay $" << payee->employeeSalary
  58.          << " to the order of "
  59.          << payee->employeeName << "...\n\n";
  60. }
  61.  
  62.  
  63. //-------------------  Employee Member Functions
  64.  
  65. Employee::Employee( char *name, long id, float salary )
  66. {
  67.     strncpy( employeeName, name, kMaxNameSize );
  68.  
  69.     employeeName[ kMaxNameSize - 1 ] = '\0';
  70.  
  71.     employeeID = id;
  72.     employeeSalary = salary;
  73.     
  74.     cout << "Creating employee #" << employeeID << "\n";
  75. }
  76.  
  77. Employee::~Employee()
  78. {
  79.     cout << "Destroying employee #" << employeeID << "\n";
  80. }
  81.  
  82. void    Employee::PrintEmployee()
  83. {
  84.     cout << "-----\n";
  85.     cout << "Name:   " << employeeName << "\n";
  86.     cout << "ID:     " << employeeID << "\n";
  87.     cout << "Salary: " << employeeSalary << "\n";
  88.     cout << "-----\n";
  89. }
  90.  
  91.  
  92. //---------------------------------------  main
  93.  
  94. int    main()
  95. {
  96.     Employee    *employee1Ptr;
  97.     Payroll        *payroll1Ptr;
  98.     
  99.     payroll1Ptr = new Payroll;
  100.     
  101.     employee1Ptr = new Employee( "Carlos Derr", 1000, 500.0 );
  102.     
  103.     employee1Ptr->PrintEmployee();
  104.     
  105.     payroll1Ptr->PrintCheck( employee1Ptr );
  106.     
  107.     delete employee1Ptr;
  108.     delete payroll1Ptr;
  109.     
  110.     return 0;
  111. }